% fname: routing_oddeven__sel_nop__topology_8x8__.m
% ./noxim -routing oddeven -sel nop -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 8 -traffic transpose1 

function [max_pir, max_throughput, min_delay] = routing_oddeven__sel_nop__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.007         16.716      0.0561777             76           3595          28763
            0.007        16.5228      0.0563145             92           3604          28833
            0.007        16.8974      0.0561992            130           3597          28774
            0.007        16.5744      0.0547871             76           3506          28051
            0.007         16.995      0.0564668            109           3618          28911
            0.007        16.8659      0.0566426             94           3624          29001
            0.007        16.7502       0.055502            100           3551          28417
            0.007        16.7397      0.0546348             99           3496          27973
            0.007        16.9709      0.0580527            119           3716          29723
            0.007         17.136      0.0584785             95           3743          29941
            0.007        16.5393      0.0555977             80           3560          28466
            0.007        17.3381        0.05775             93           3697          29568
            0.007         16.883      0.0566152             90           3624          28987
            0.007        17.2735      0.0563301            112           3605          28841
            0.007         16.243      0.0536406             83           3432          27464
            0.007        16.9651      0.0550879             97           3525          28205
            0.007        17.3167      0.0564258            101           3612          28890
            0.007        16.7611      0.0549473             92           3516          28133
            0.007        16.6002      0.0564785             75           3614          28917
            0.007        16.8031       0.055248             91           3534          28287
            0.008        17.1821       0.063043            106           4037          32278
            0.008        17.8378      0.0657051             91           4205          33641
            0.008        18.0803      0.0649746            108           4161          33267
            0.008        17.9213       0.063498             99           4066          32511
            0.008        18.2498      0.0651836            101           4172          33374
            0.008        17.6909      0.0635117             86           4064          32518
            0.008        17.7037      0.0647578             89           4144          33156
            0.008        17.9534       0.063334            118           4055          32427
            0.008        17.4557      0.0641055             78           4099          32822
            0.008        17.8157      0.0644395             82           4123          32993
            0.008        17.5498      0.0644023             94           4120          32974
            0.008        17.5171      0.0637812             91           4086          32656
            0.008        17.8228      0.0638828             91           4086          32708
            0.008        17.4353      0.0644492             92           4124          32998
            0.008        17.3402      0.0641133             92           4103          32826
            0.008        18.0392      0.0636953            123           4077          32612
            0.008        18.3605      0.0636191            107           4072          32573
            0.008        17.4693      0.0624297            108           3995          31964
            0.008        18.0281      0.0656699            137           4200          33623
            0.008        17.8879      0.0631465            111           4042          32331
            0.009        19.4066      0.0712285            133           4560          36469
            0.009        19.3959      0.0726074            168           4648          37175
            0.009        19.1627      0.0741094            143           4744          37944
            0.009        19.0171      0.0711738            139           4552          36441
            0.009        18.8847      0.0706387            111           4520          36167
            0.009        18.8577      0.0703848            105           4504          36037
            0.009        19.2341      0.0736816            136           4716          37725
            0.009        18.9151      0.0719473            125           4603          36837
            0.009         18.632      0.0718418            118           4600          36783
            0.009         19.346       0.074168            126           4748          37974
            0.009         19.644      0.0734648            131           4705          37614
            0.009        18.8969      0.0718789            116           4599          36802
            0.009        19.1817      0.0720195            135           4612          36874
            0.009        19.2702       0.072502            123           4641          37121
            0.009        19.7935      0.0720059            156           4606          36867
            0.009        19.5525      0.0726152            132           4650          37179
            0.009         19.518       0.071584             98           4583          36651
            0.009        19.3307      0.0718262            128           4597          36775
            0.009        19.8077      0.0718301            109           4596          36777
            0.009        19.7411      0.0730195            146           4673          37386
             0.01         21.026      0.0805605            139           5155          41247
             0.01        20.5529      0.0796777            133           5099          40795
             0.01        22.2304      0.0797637            139           5104          40839
             0.01        21.1996      0.0801816            133           5129          41053
             0.01        21.4887      0.0809414            140           5179          41442
             0.01        21.5731      0.0816914            150           5229          41826
             0.01        20.9734       0.080416            177           5147          41173
             0.01        21.0295      0.0798145            156           5110          40865
             0.01        21.0885      0.0804648            153           5150          41198
             0.01        21.8012      0.0807129            155           5165          41325
             0.01        20.2409       0.080666            114           5163          41301
             0.01        21.0248      0.0787715            139           5041          40331
             0.01        20.6866      0.0789043            123           5048          40399
             0.01        21.5622       0.082623            145           5290          42303
             0.01        20.9676      0.0800742            156           5126          40998
             0.01        20.6625      0.0792324            114           5070          40567
             0.01        20.3628      0.0800547            119           5124          40988
             0.01        20.0891      0.0796094            144           5094          40760
             0.01         21.048      0.0804082            139           5147          41169
             0.01        21.3702      0.0817461            152           5232          41854
            0.011        23.4713      0.0888496            202           5687          45491
            0.011        22.2242      0.0875801            172           5603          44841
            0.011        23.4531      0.0869707            165           5568          44529
            0.011        21.9061      0.0865508            128           5539          44314
            0.011        22.3127      0.0874277            181           5594          44763
            0.011        23.3171      0.0890488            200           5698          45593
            0.011        22.2825      0.0869395            190           5565          44513
            0.011        23.1991      0.0850508            206           5444          43546
            0.011        24.2019      0.0874902            199           5601          44795
            0.011        22.2848      0.0860859            167           5509          44076
            0.011        22.7594      0.0885898            139           5673          45358
            0.011        22.8308      0.0868574            157           5560          44471
            0.011        21.9133      0.0855781            139           5478          43816
            0.011        23.3931      0.0876836            189           5612          44894
            0.011        23.6866      0.0901562            165           5772          46160
            0.011        23.4971      0.0902168            142           5773          46191
            0.011        23.1104      0.0868789            144           5560          44482
            0.011        22.9297      0.0873242            165           5589          44710
            0.011        22.8799      0.0876797            166           5613          44892
            0.011        23.5874      0.0887422            159           5683          45436
            0.012        25.8246      0.0974395            170           6236          49889
            0.012        27.0725      0.0944219            267           6040          48344
            0.012        28.1049      0.0950586            268           6081          48670
            0.012        26.9367      0.0970391            196           6210          49684
            0.012        25.1195      0.0941914            291           6031          48226
            0.012        29.8624      0.0971035            288           6215          49717
            0.012        29.2606      0.0972656            245           6224          49800
            0.012        25.4767      0.0946113            226           6054          48441
            0.012        25.8655      0.0953086            234           6102          48798
            0.012        26.7702      0.0959512            223           6140          49127
            0.012        26.8466      0.0948223            501           6068          48549
            0.012        25.7041      0.0954395            199           6107          48865
            0.012        24.8657       0.095207            213           6093          48746
            0.012        27.6026      0.0953516            278           6104          48820
            0.012        27.5753      0.0975527            318           6240          49947
            0.012        27.7526      0.0956875            219           6124          48992
            0.012        27.0323      0.0947656            227           6061          48520
            0.012          26.71      0.0957754            252           6127          49037
            0.012        27.1855      0.0964746            377           6174          49395
            0.012        26.3864      0.0969883            211           6206          49658
            0.013        28.6123       0.103232            219           6605          52855
            0.013        37.0037       0.105318            434           6737          53923
            0.013         33.697       0.104688            335           6704          53600
            0.013        29.6886       0.103145            350           6602          52810
            0.013        34.9669       0.104979            624           6717          53749
            0.013        28.6979       0.102619            323           6570          52541
            0.013        31.5171       0.106268            336           6802          54409
            0.013        31.0181       0.102502            266           6563          52481
            0.013        37.1483       0.104318            560           6675          53411
            0.013        32.7075       0.103568            478           6626          53027
            0.013        30.5075       0.101842            387           6518          52143
            0.013        35.8825       0.104555            368           6689          53532
            0.013        31.7785       0.105818            378           6772          54179
            0.013        31.5671       0.104479            300           6689          53493
            0.013        29.9107       0.102582            336           6565          52522
            0.013        35.9584       0.104412            436           6683          53459
            0.013        30.9655       0.103414            293           6618          52948
            0.013        32.2871       0.102668            344           6572          52566
            0.013        35.9109       0.104127            528           6667          53313
            0.013        31.7306       0.105924            241           6778          54233
            0.014        47.3912       0.112869            551           7224          57789
            0.014        43.1862       0.111111            519           7110          56889
            0.014        52.4821        0.11417            833           7307          58455
            0.014         49.733       0.113037            985           7236          57875
            0.014        47.8502       0.109945           1181           7035          56292
            0.014        44.8582       0.113326            577           7252          58023
            0.014        47.8023       0.113027            987           7234          57870
            0.014        41.0639       0.109791            544           7026          56213
            0.014        43.1697       0.112361           1024           7189          57529
            0.014        52.2801       0.112922           1235           7229          57816
            0.014        46.2787       0.109729            883           7019          56181
            0.014        56.3274        0.11274           1185           7218          57723
            0.014        44.2539        0.11173            455           7152          57206
            0.014         51.958       0.110787           1333           7094          56723
            0.014        45.9745       0.112141            636           7177          57416
            0.014         51.831       0.113084            731           7238          57899
            0.014        47.8489        0.11282            895           7220          57764
            0.014        54.8067       0.111623           1583           7145          57151
            0.014        49.6373       0.112004           1036           7169          57346
            0.014        51.3793       0.112307            765           7190          57501
            0.015        101.347       0.117992           4178           7552          60412
            0.015        90.7144       0.118467           2109           7581          60655
            0.015        71.5185       0.120639           1485           7723          61767
            0.015         113.33       0.120494           2090           7717          61693
            0.015        133.463       0.119875           4650           7674          61376
            0.015        105.271       0.120922           2291           7739          61912
            0.015        64.6445       0.119514           1250           7649          61191
            0.015        66.2776       0.119654           1788           7656          61263
            0.015        95.8812       0.121336           3263           7767          62124
            0.015        76.1334       0.119688           1810           7660          61280
            0.015        101.029       0.119457           4238           7646          61162
            0.015        129.028       0.119209           3242           7628          61035
            0.015        66.1124       0.117854           1263           7535          60341
            0.015        61.3688       0.118578           1120           7589          60712
            0.015        72.2433       0.115666           1620           7399          59221
            0.015         83.062       0.119461           1834           7643          61164
            0.015        75.2067       0.119391           1175           7644          61128
            0.015        81.2114       0.119521           1394           7650          61195
            0.015        72.8088       0.117525           1644           7520          60173
            0.015        104.551       0.119656           2698           7661          61264
            0.016        187.257       0.123699           3298           7917          63334
            0.016        142.264       0.127182           3967           8143          65117
            0.016        200.978       0.125016           5130           8002          64008
            0.016        124.887       0.124344           3936           7959          63664
            0.016        161.074       0.123295           4942           7893          63127
            0.016        112.047       0.124176           2428           7943          63578
            0.016        151.435       0.125523           4751           8032          64268
            0.016        198.213       0.123939           6092           7930          63457
            0.016        168.768       0.125742           5053           8050          64380
            0.016        204.659       0.124625           4339           7978          63808
            0.016        233.629       0.127596           3688           8163          65329
            0.016        143.153        0.12424           4769           7952          63611
            0.016        196.435       0.125439           5874           8033          64225
            0.016          172.6       0.125691           4534           8039          64354
            0.016        147.809       0.125027           4256           8002          64014
            0.016        234.472       0.125404           5243           8022          64207
            0.016        179.628       0.124676           4303           7981          63834
            0.016        170.113       0.128328           4556           8215          65704
            0.016        184.941       0.124527           5043           7972          63758
            0.016        139.207       0.125744           2099           8052          64381
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
